home *** CD-ROM | disk | FTP | other *** search
/ Network Supervisor's Toolkit / Network Supervisor's Toolkit.iso / tools / mdxdos23 / multix.h < prev    next >
C/C++ Source or Header  |  1996-07-10  |  18KB  |  691 lines

  1. #ifndef    MultiXHIncluded
  2. #define    MultiXHIncluded
  3.  
  4. #define    MultiXVersion                    230
  5. #define MultiXOldestVersionSupported    220
  6.  
  7. #define    MUtilArrayIndexNew                -1
  8. #define    MUtilQueueSeqInvalid            -1
  9. #define    MUtilArrayIndexInvalid            -2
  10. #define    MMdxXonChar                        0x11
  11. #define    MMdxXoffChar                    0x13
  12.  
  13. #define    MMdxParityNone        0l
  14. #define    MMdxParityEven        0x80000000l
  15. #define    MMdxParityOdd        0xc0000000l
  16. #define    MMdxNoXonXoff        0x20000000l
  17. #define    MMdxWordSize8        0x10000000l
  18.  
  19.  
  20. #define    Use16
  21. #define    MsDosOs
  22. #define StdCall                 __pascal
  23. #define    NoNetworkTranslation
  24. #define    TimerAjustValue            0l
  25. /*
  26. #define    BEGIN        {
  27. #define    END            }
  28. #define    ELSE        else
  29. #define    IF if        (
  30. #define    THEN        )
  31. #define    AND            &&
  32. #define    OR            ||
  33. #define    LAND        &
  34. #define    LOR            |
  35. #define    XOR            ^
  36. #define    MOD            %
  37. #define    SLAND(x,y)    (x)    &= (y)
  38. #define    SLOR(x,y)    (x)    |= (y)
  39. #define    SXOR(x,y)    (x)    ^= (y)
  40. #define    LANDE        &=
  41. #define    LORE        |=
  42. #define    XORE        ^=
  43. #define    MODE        %=
  44. #define    REPEAT        do
  45. #define    UNTIL(x)    while    (x)
  46. #define    WHILE        while    (
  47. #define    FOREVER        for(;;)
  48. #define    FOR            for    (
  49. #define    DO            )
  50. #define    GETS        =
  51. #define    EQ            ==
  52. #define    NE            !=
  53. #define    GE            >=
  54. #define    LE            <=
  55. #define    LT            <
  56. #define    GT            >
  57. #define    NOT            !
  58. #define    LNEG        ~
  59. #define    NOTEQ        !=
  60. */
  61.  
  62. #define    On    1
  63. #define    Off    0
  64.  
  65. #define    MswGet(x)    (UInt16)(((UInt32)(x))    >>    16)
  66. #define    LswGet(x)    (UInt16)(((UInt32)(x))    LAND    0xffff)
  67.  
  68. #define    MswSet(x,y)    x    GETS    (y    <<    16)    LOR    LswGet(x)
  69. #define    LswSet(X,y)    x    GETS    y    LOR    ((UInt32)(x)    LAND    0xffff0000)
  70.  
  71.  
  72. #define    MakeFp(_Seg,_Off)    ((FarPtr)(((UInt32)_Seg<<16)    LOR    _Off))
  73.  
  74. #define    TypedMax(t,a,b)    (t)(((t)(a)    > (t)(b)    ?    (a)    : (b)))
  75. #define    TypedMin(t,a,b)    (t)(((t)(a)    < (t)(b)    ?    (a)    : (b)))
  76.  
  77. #define    Max16(a,b)    TypedMax(Int16,a,b)
  78. #define    Min16(a,b)    TypedMin(Int16,a,b)
  79.  
  80. #define    MaxU16(a,b)    TypedMax(UInt16,a,b)
  81. #define    MinU16(a,b)    TypedMin(UInt16,a,b)
  82.  
  83. #define    Max32(a,b)    TypedMax(Int32,a,b)
  84. #define    Min32(a,b)    TypedMin(Int32,a,b)
  85.  
  86. #define    MaxU32(a,b)    TypedMax(UInt32,a,b)
  87. #define    MinU32(a,b)    TypedMin(UInt32,a,b)
  88.  
  89. #define    SwapInt16(_Num)    (UInt16)((((UInt16)(_Num))    >>    8)    LOR    (((UInt16)(_Num))    <<    8))
  90.  
  91.  
  92. #define    MIntSwap(_Int)        \
  93.     (sizeof((_Int))    EQ    sizeof(Int16)    ?    \
  94.     (int)SwapInt16((UInt16)(_Int))            :    \
  95.     (int)SwapInt32((UInt32)(_Int)))
  96.  
  97. #define    MIntSwapSet(_Int)    _Int    =    MIntSwap(_Int)
  98.  
  99. #define    MNetToHostInt(_Int)    (_Int)
  100. #define    MHostToNetInt(_Int)    (_Int)
  101. #define    MNetToHostIntSet(_Int)
  102. #define    MHostToNetIntSet(_Int)
  103.  
  104.  
  105. #define    NullP            (void    *)0
  106. #define    MByteArray(x)    struct    {char    Byte[x];}
  107. #define    IsNullP(x)        ((x)    EQ    NullP)
  108. #define    NotNullP(x)        ((x)    NE    NullP)
  109. #define    IfNotNullP(x)    IF    (x)    NE NullP    THEN
  110. #define    IfNullP(x)        IF    (x)    EQ NullP    THEN
  111. #define    MCreateNew(_X)    IfNullP((_X)    GETS    MdxCalloc(sizeof(*(_X))))    FatalError("No    Memory");
  112. #define    MOccurs(_X)        (sizeof(_X)    / sizeof((_X)[0]))
  113.  
  114. #define    FatalError(_ErrorText)    FatalErrorHandler(_ErrorText)
  115.  
  116.  
  117. typedef                int        Int16;
  118. typedef    unsigned            UInt16;
  119. typedef                long    Int32;
  120. typedef    unsigned    long    UInt32;
  121. typedef    unsigned    short    UShort;
  122. typedef    unsigned    int        TBit;
  123. typedef                int        Int;
  124. typedef    unsigned    int        UInt;
  125. typedef                char    Int8;
  126. typedef    unsigned    char    UInt8;
  127. typedef                double    Double64;
  128. typedef                float    Float32;
  129. typedef                Int32    TFileDescr;
  130. typedef                Int32    TLinkDescr;
  131. typedef                Int16    TSLinkDescr;
  132. typedef                Int16    TPtrArrayIndex;
  133. typedef                Int32    TIndex;
  134. typedef                UInt16    TSIndex;
  135. typedef                UInt16    TBufSize;
  136. typedef                Int32    TCounter;
  137. typedef                Int16    TSCounter;
  138. typedef                UInt16    TMdxObjectId;
  139. typedef                Int32    TQueueSeq;
  140. typedef                UInt32    TBaudRate;
  141. typedef                UInt32    TTimer;
  142. typedef                UInt32    TTimerId;
  143. typedef                UInt32    TTimerTag;
  144. typedef                Int32    TReqSeq;
  145. typedef                Int16    TSReqSeq;
  146. typedef                Int32    TListKey;
  147. typedef                UInt32    *UInt32Ptr;
  148. typedef                Int8    *Int8Ptr;
  149. typedef                UInt8    *UInt8Ptr;
  150. typedef                void    Void;
  151. typedef                Int32    TMdxMsgSize;
  152. typedef                Int16    TMdxBlockNo;
  153. typedef                UInt16    TMdxMsgPri;
  154. typedef                Int32    TMdxProcId;
  155. typedef                Int16    TMdxMsgCode;
  156. typedef                UInt32    TMdxTime;
  157. typedef                UInt16    TMdxVersion;
  158. typedef                UInt8    TOnOff;
  159. typedef                Int8    TSResult;
  160. typedef                Int8    TSBoolean;
  161.  
  162.  
  163. typedef    MByteArray(30)    TMdxLinkName;
  164. typedef    MByteArray(80)    TMdxService;
  165. typedef    MByteArray(20)    TMdxNetAddr;
  166. typedef    MByteArray(10)    TMdxPassword;
  167. typedef    MByteArray(24)    TMdxProcDescr;
  168.  
  169. #pragma    pack(1)
  170.  
  171. typedef union    TVarChar
  172. {
  173.     Int16    Len;
  174.     Int8    Text[2];
  175. } TVarChar;
  176.  
  177. #pragma    pack()
  178.  
  179. typedef    enum    /*    TMdxStartupAttributes    */
  180. {
  181.     MdxStartAsGateWay        =    0x0001,
  182.     MdxUseDualEventQueues    =    0x0002,
  183.     MdxReportAllProcesses    =    0x0004,
  184.     MdxReportAllLinks        =    0x0008,
  185.     MdxStartAsRouter        =    0x0010,
  186.     MdxDisplayVersion        =    0x4000
  187. } TMdxStartupAttributes;
  188.  
  189.  
  190. typedef enum
  191. {
  192.  
  193.     MdxLinkTypeAcceptOnly        =    0,    /*    Indicates    a    server    link    type,
  194.                                             usually    as a    result    of    accept
  195.                                             on    tcp/ip    or    something    like    that
  196.                                         */
  197.     MdxLinkTypeFirst            =    1,
  198.  
  199.     MdxLinkTypeAsyncLocal        =    1,
  200.     MdxLinkTypeNetBios            =    2,
  201.     MdxLinkTypeTcpIpSocket        =    3,
  202.     MdxLinkTypeNPipe            =    4,
  203.     MdxLinkTypeAsyncModem        =    5,
  204.     MdxLinkTypeX25                =    6,
  205.     MdxLinkTypeLoopBack            =    7,
  206.     MdxLinkTypeSpxIpx            =    8,
  207.     MdxLinkTypeLast
  208. } TMdxLinkType;
  209.  
  210. typedef enum
  211. {
  212.     MdxL2DlcProtoNone        =        0,
  213.     MdxL2DlcProtoHdlc        =        1
  214. } TMdxL2DlcProtocol;
  215.  
  216.  
  217. typedef enum
  218. {
  219.     Failure    =    0,
  220.     Success    =    1
  221. } TResult;
  222.  
  223. typedef enum
  224. {
  225.     False    =    0,
  226.     True    =    1
  227. } TBoolean;
  228.  
  229.  
  230. typedef enum
  231. {
  232.     MdxCallOk,
  233.     MdxInvalidPassword
  234. } TMdxCallError;
  235.  
  236.  
  237. typedef enum
  238. {
  239.     L1WarnDontFreeSendBuf    =    -300    ,
  240.     L1ErrLinkNameMissing            ,
  241.     L1ErrUnableToInitSocket            ,
  242.     L1ErrAcceptError                ,
  243.     L1ErrLinkNameTooLong            ,
  244.     L1ErrInvalidLinkType            ,
  245.     L1ErrTooManyLinks                ,
  246.     L1ErrInvalidL1Ld                ,
  247.     L1ErrUnableToOpenAsync            ,
  248.     L1ErrUnableToSetupAsync            ,
  249.     L1ErrUnableToCreateNPipe        ,
  250.     L1ErrIllegalOperation            ,
  251.     L1ErrInvalidReqCode                ,
  252.     L1ErrTimeout                    ,
  253.     L2ErrTooManyLinks                ,
  254.     L2ErrTooManyConnectRetries        ,
  255.     L2ErrSendQueueFull                ,
  256.     L2ErrSendBufferEmpty            ,
  257.     L2ErrSendBufferTooBig            ,
  258.     L2ErrMaxResetCount                ,
  259.     L2ErrMaxPollCount                ,
  260.     L2ErrInvalidConnectMode            ,
  261.     L2ErrInvalidFd                    ,
  262.     L2ErrInvalidApprSeq                ,
  263.     L2ErrInvalidFrameType            ,
  264.     L2ErrInvalidReqCode                ,
  265.     L2ErrConnectFailed                ,
  266.     L2ErrNoResetResponse            ,
  267.     L2ErrNoPollResponse                ,
  268.     L3ErrProcessAlreadyDefined        ,
  269.     L3ErrNoLinkAvailable            ,
  270.     L3ErrSendBufferEmpty            ,
  271.     L3ErrMsgCanceled                ,
  272.     L3ErrInvalidReqCode                ,
  273.     L3ErrProcessDoesNotExist        ,
  274.     L3ErrNoGateWayAvailable            ,
  275.     L4ErrMsgSendCanceled            ,
  276.     L4ErrInvalidReqCode                ,
  277.     L4ErrInvalidReqSeq                ,
  278.     L5ErrProcessClosed                ,
  279.     L5ErrInvalidReqCode                ,
  280.     L6ErrInvalidReqCode                ,
  281.     UtErrTooManyLinks                ,
  282.     UtErrInvalidHashTable            ,
  283.     UtErrDuplicateHashKey            ,
  284.     UtErrHashKeyNotFound            ,
  285.     UtErrInvalidStackTable            ,
  286.     UtErrInvalidParam                ,
  287.     TsrErrMsgNotFound                ,
  288.     L2ErrMissingBuffer
  289. } TMdxError;
  290.  
  291. typedef enum
  292. {
  293.     DdeErrFirstError            =    -400,
  294.     DdeErrLastError                =    -381,
  295.     DbmErrFirstError            =    -380,
  296.     DbmErrLastError                =    -330,
  297.     MdxErrFirstError            =    -300,
  298.     MdxErrLastError                =    -201,
  299.     TpErrFirstError                =    -200,
  300.     TpErrLastError                =    -101,
  301.     MdErrSessionRestarted        =    -100,
  302.     MdErrMsgTimedOut,
  303.     MdErrMsgCanceled,
  304.     MdErrInvalidProcId,
  305.     MdErrUnableToOpenLink,
  306.     MdErrInvalidLinkLd,
  307.     MdErrInvalidDriverIndex,
  308.     MdErrLinkDisconnected,
  309.     MdErrDataReplyNotAllowed,
  310.     MdErrInvalidReplyInfo,
  311.     MdErrMsgIsEmpty,
  312.     MdErrInvalidEventCode,
  313.     MdErrLinkClosed,
  314.     MdErrLinkAlreadyOpened,
  315.     MdErrProcessNotReady,
  316.     MdErrNoMemory,
  317.     MdErrLinkTypeNotSupported,
  318.     MdErrNoError    =    0
  319. } TMdxApplError;
  320.  
  321.  
  322. typedef enum
  323. {
  324.     MdxDdeErrInvalidMsgCode    =    -400,
  325.     MdxDdeErrAdviseStopped,
  326.     MdxDdeErrInvalidDataFormat,
  327.     MdxDdeErrInvalidItem
  328. } TMdxDdeError;
  329.  
  330.  
  331.  
  332. typedef enum
  333. {
  334.     MdxConnectModeListen,
  335.     MdxConnectModeCall
  336. } TMdxConnectMode;
  337.  
  338. typedef enum
  339. {
  340.     MdxTimerEvent                        =    110,
  341.     MdxStdInAvailable                    =    111,
  342.     MdxIdleEvent                        =    120,
  343.     MdxL1L2EvConnectEnabled                =    130,
  344.     MdxL1L2EvAcceptEnabled                =    140,
  345.     MdxL1L2EvReadEnabled                =    150,
  346.     MdxL1L2EvWriteEnabled                =    160,
  347.     MdxL1L2EvLinkDisconnected            =    170,
  348.     MdxL2L3EvSendComplete                =    180,
  349.     MdxL2L3EvRecvComplete                =    190,
  350.     MdxL2L3EvLinkClosed                    =    200,
  351.     MdxL2L3EvConnectComplete            =    210,
  352.     MdxL2L3EvQueuesReset                =    220,
  353.     MdxL2L3EvTransmitEnabled            =    225,
  354.     MdxL2L3EvResumeTransmision            =    227,
  355.     MdxL3L4EvMsgCancled                    =    230,
  356.     MdxL3L4EvMsgSentOk                    =    240,
  357.     MdxL3L4EvMsgReceived                =    250,
  358.     MdxL3L4EvProcessReady                =    260,
  359.     MdxL3L4EvProcessFailed                =    270,
  360.     MdxL4L5EvMsgReceived                =    280,
  361.     MdxL4L5EvControlMsgReceived            =    285,
  362.     MdxL4L5EvMsgCancled                    =    290,
  363.     MdxL4L5EvMsgSentOk                    =    300,
  364.     MdxL4L5EvProcessReady                =    310,
  365.     MdxL4L5EvProcessFailed                =    320,
  366.     MdxL4L5EvProcessRestarted            =    330,
  367.     MdxL4L5EvProcessConnected            =    340,
  368.     MdxL5L6EvMsgReceived                =    350,
  369.     MdxL5L6EvControlMsgReceived            =    355,
  370.     MdxL5L6EvCallReqReceived            =    360,
  371.     MdxL5L6EvCallRejected                =    370,
  372.     MdxL5L6EvMsgCancled                    =    380,
  373.     MdxL5L6EvMsgSentOk                    =    390,
  374.     MdxL5L6EvCallCompleted                =    400,
  375.     MdxL5L6EvProcessReady                =    402,
  376.     MdxL5L6EvProcessNotReady            =    404,
  377.  
  378.     MdxEvDataMsgReceived                =    410,
  379.     MdxEvDataReplyReceived                =    420,
  380.     MdxEvSendMsgCompleted                =    430,
  381.  
  382.     MdxEvCallReqReceived                =    440,
  383.     MdxEvCallRejected                    =    450,
  384.     MdxEvCallCompleted                    =    460,
  385.  
  386.  
  387.     MdxEvProcessReady                    =    462,
  388.     MdxEvProcessNotReady                =    464,
  389.  
  390.     MdxEventApplInit                    =    470,
  391.     MdxEvLinkStatus                        =    480,
  392.     MdxEvProcessAdded                    =    490,
  393.     MdxEvProcessRemoved                    =    491,
  394.     MdxEvNonMultiXDataReceived            =    500,
  395.  
  396.  
  397.     MdxApplEventCodeFirst                =    30000,
  398.     MdxApplEventCodeLast                =    31000
  399.  
  400. } TMdxEventCode;
  401.  
  402. typedef enum
  403. {
  404.     /*    Application    Assigned    Attributes    */
  405.  
  406.     MdxResponseRequired    =    0x0001,
  407.     MdxReportSuccess    =    0x0002,
  408.     MdxReportError        =    0x0004,
  409.     MdxResendOnRestart    =    0x0008,
  410.     MdxReportAll        =    0x0007,
  411.     MdxSendReliable        =    0x000f,
  412.     MdxUseDataBuffer    =    0x0010,
  413.     MdxUseDbProtection    =    0x0020,
  414.     MdxUseMultiCast        =    0x0040,
  415.     MdxDontUseAllocMod    =    0x0100,
  416.  
  417.     /*    Kernel    Assigned    Attributes    */
  418.  
  419.     MdxL6IsReplyMsg            =    0x1000
  420. } TMdxSendAttr;
  421.  
  422. typedef enum
  423. {
  424.     MdxL2EventHandlerIndex            =    2,
  425.     MdxL3EventHandlerIndex            =    3,
  426.     MdxL4EventHandlerIndex            =    4,
  427.     MdxL5EventHandlerIndex            =    5,
  428.     MdxL6EventHandlerIndex            =    6,
  429.     MdxL7EventHandlerIndex            =    7,
  430.     MdxTimerMgrEventHandlerIndex    =    8,
  431.     MdxLinkMgrEventHandlerIndex        =    9,
  432.     MdxProcMgrEventHandlerIndex        =    10,
  433.     MdxEventHandlerIndexLast
  434. } TMdxEventHandlerIndex;
  435.  
  436.  
  437. typedef enum
  438. {
  439.     MdxTpmFirstMsgCode            =    -32700,
  440.     MdxTpmLastMsgCode            =    -32601,
  441.     MdxMvxFirstMsgCode            =    -32500,
  442.     MdxMvxLastMsgCode            =    -32401,
  443.     MdxSqlFirstMsgCode            =    -32400,
  444.     MdxSqlLastMsgCode            =    -32351,
  445.     MdxDdeAdviseStartMsgCode    =    -32100,
  446.     MdxDdeAdviseDataMsgCode        =    -32099,
  447.     MdxDdeDataReqMsgCode        =    -32098,
  448.     MdxDdeDataReplyMsgCode        =    -32097,
  449.     MdxDdePokeMsgCode            =    -32096,
  450.     MdxDdeExecuteMsgCode        =    -32095
  451. } TMdxReservedMsgCodes;
  452.  
  453. typedef enum
  454. {
  455.     MdxDdeDataFormatIsText    =    1
  456. } TMdxDdeDataFormat;
  457.  
  458.  
  459. typedef enum
  460. {
  461.     MdxSeekStart,
  462.     MdxSeekFwrd,
  463.     MdxSeekBack,
  464.     MdxSeekEnd
  465. } TMdxMsgSeekOrigin;
  466.  
  467.  
  468. #pragma    pack(2)
  469.  
  470. typedef    struct    TMdxMsg
  471. {
  472.     TMdxObjectId    Id;
  473.     TMdxMsgSize        BytesRead;
  474.     void            *Global;
  475. }    TMdxMsg;
  476.  
  477. typedef    struct    TMdxProtocol
  478. {
  479.     TBoolean    Supported;
  480.     void        (*StartupRoutine)(void);
  481.     void        (*CleanUpRoutine)(void);
  482.     TMdxError    (*ServiceRoutine)(void    *);
  483.     void        (*EventHandler)(void    *);
  484.     void        (*SetPoll)(void);
  485.     void        (*CheckPoll)(void);
  486. }    TMdxProtocol;
  487.  
  488. typedef enum
  489. {
  490.     MdxL2NetDriverIndex    =    0,
  491.     MdxL2RawDriverIndex    =    2
  492. } TMdxL2DriverIndex;
  493.  
  494. typedef enum
  495. {
  496.     MdxL3NetDriverIndex    =    0
  497. } TMdxL3DriverIndex;
  498.  
  499. typedef enum
  500. {
  501.     MdxLinkClosed,
  502.     MdxLinkDisconnected,
  503.     MdxLinkWaitConnect,
  504.     MdxLinkConnected
  505. } TMdxLinkStatus;
  506.  
  507.  
  508.  
  509. typedef    struct    TMdxLinkParams
  510. {
  511.     TLinkDescr            Ld;
  512.     TMdxLinkType        LinkType;
  513.     TMdxLinkName        LinkName;
  514.     TBaudRate            LinkBaud;
  515.     TOnOff                UseDlcFraming;
  516.     TOnOff                Ebcdic;
  517.     TMdxNetAddr            NetAddr;
  518.     TMdxL2DriverIndex    L2DriverIndex;
  519.     TMdxL3DriverIndex    L3DriverIndex;
  520.     TMdxLinkStatus        LinkStatus;
  521.     TMdxService            Service;
  522.     TMdxConnectMode        ConnectMode;
  523.     TTimer                ConnectTimeout;
  524.     TTimer                ConnectRetriesDelay;
  525.     TBufSize            L1MaxSendSize;
  526.     TCounter            MaxConnectRetries;    /*    L3    */
  527.     TTimer                IdleTimeout;        /*    L3    */
  528.     TTimer                ImAliveInterval;    /*    L3    */
  529.     TTimer                PollInterval;        /*    L2    */
  530.     TSCounter            MaxPollRetries;        /*    L2    */
  531.     TMdxProcId            DefaultProcId;
  532. }    TMdxLinkParams;
  533.  
  534. typedef    struct    TMdxProcessParams
  535. {
  536.     TMdxProcId        ProcId;
  537.     TMdxPassword    PasswordToSend;
  538.     TMdxPassword    ExpectedPassword;
  539.     TTimer            InactivityTimer;
  540.     TTimer            ConnectRetriesInterval;
  541. }    TMdxProcessParams;
  542.  
  543. typedef    struct    TMdxApplTimerInfo
  544. {
  545.     TTimerId        TimerId;
  546.     Int16            Code;
  547.     TTimer            Timer;
  548.     TTimerTag        Tag1;
  549.     TTimerTag        Tag2;
  550.     TTimerTag        Tag3;
  551.     TCounter        Count;
  552. }    TMdxApplTimerInfo;
  553.  
  554.  
  555.  
  556.  
  557. /**************************************************************************/
  558. /**************************************************************************/
  559. /**************************************************************************/
  560. /**************************************************************************/
  561.  
  562. /****    The internal structure of following structures are for            ***/
  563. /****    Application use.                                                ***/
  564.  
  565. /**************************************************************************/
  566. /**************************************************************************/
  567. /**************************************************************************/
  568. /**************************************************************************/
  569.  
  570. typedef    struct    TMdxEvent
  571. {
  572.     TMdxEventCode    Code;
  573.     TLinkDescr        Ld;
  574.     TMdxError        Error;
  575.     TReqSeq            ReqSeq;
  576.     TMdxProcId        ProcId;
  577.     void            *Data;
  578.     TBufSize        DataCount;
  579.     TMdxEventHandlerIndex    DataDestructorIndex;
  580.     TBoolean        KeepEvent;
  581.     TMdxObjectId    Id;
  582.     TTimer            EventTimer;
  583. }    TMdxEvent;
  584.  
  585. /*    Send / Receive Msg Info */
  586. typedef    struct    TMdxSRMsgInfo
  587. {
  588.     struct
  589.     {
  590.         TMdxMsg            *Msg;
  591.         TMdxMsgCode        MsgCode;
  592.         TMdxProcId        SentFrom;
  593.         TQueueSeq        SenderMsgId;
  594.         TMdxSendAttr    SendAttr;
  595.         TMdxMsgPri        MsgPri;
  596.     }    Received;
  597.     struct
  598.     {
  599.         TMdxMsg            *Msg;
  600.         TMdxMsgCode        MsgCode;
  601.     }    Sent;
  602. }    TMdxSRMsgInfo;
  603.  
  604. #pragma    pack()
  605.  
  606. typedef void            (cdecl    *    TEventHandler)(TMdxEvent     *);
  607. typedef    void            (cdecl    *    TEventDataDestructor)(TMdxEvent    *);
  608.  
  609. extern    TMdxProtocol        StdCall        ProtocolNotSupported(void);
  610.  
  611. extern    TMdxTime        StdCall    MdxGetTime(void);
  612. extern    UInt32            StdCall    MdxTimeTo_time_t(TMdxTime);
  613. extern    void            *StdCall    MdxAlloc(UInt32);
  614. extern    void            *StdCall    MdxCalloc(UInt32);
  615. extern    void            *StdCall    MdxRealloc(void    *,UInt32);
  616. extern    void            StdCall    MdxFree(void    *);
  617. extern    TTimer            StdCall    MdxGetCurrTimerValue(void);
  618.  
  619.  
  620.  
  621. extern    TTimerId        StdCall    MdxSetApplTimer(Int16,TTimer,TTimerTag,
  622.                                                     TTimerTag,TTimerTag,
  623.                                                     TCounter);
  624. extern    void            StdCall    MdxClrTimer(TTimerId);
  625. extern    TResult            StdCall    MdxGetApplTimerInfo(void    *,
  626.                                                         TMdxApplTimerInfo    *);
  627.  
  628.  
  629. extern    TMdxMsg            *StdCall    MdxMsgNew(TMdxMsgSize);
  630. extern    TMdxMsg            *StdCall    MdxMsgNewFile(Int8Ptr,UInt8Ptr,
  631.                                                 TSCounter);
  632. extern    TMdxMsg            *StdCall    MdxMsgDup(TMdxMsg    *);
  633. extern    TResult            StdCall    MdxMsgDelete(TMdxMsg    *);
  634. extern    TResult            StdCall    MdxMsgAppend(TMdxMsg    *,void    *,
  635.                                                 TBufSize);
  636. extern    TResult            StdCall    MdxMsgStore(TMdxMsg    *,TMdxMsgSize,void    *,
  637.                                                 TBufSize);
  638. extern    TBufSize        StdCall    MdxMsgRead(TMdxMsg    *,void    *,
  639.                                                 TBufSize);
  640. extern    TMdxMsgSize        StdCall    MdxMsgSeekRead(TMdxMsg    *,TMdxMsgSize,TMdxMsgSeekOrigin);
  641. extern    TResult            StdCall    MdxMsgRewindRead(TMdxMsg    *);
  642. extern    TMdxMsgSize        StdCall    MdxMsgSizeGet(TMdxMsg    *);
  643. extern    TMdxError        StdCall    MdxSendMsg(TMdxProcId,TMdxMsg    *,
  644.                                                 TMdxMsgCode,TMdxMsgPri,
  645.                                                 TMdxSendAttr,TReqSeq,TTimer);
  646. extern    TMdxError        StdCall    MdxSendData(TMdxProcId,void    *,
  647.                                                 TBufSize,TMdxMsgCode,
  648.                                                 TMdxMsgPri,TMdxSendAttr,
  649.                                                 TReqSeq,TTimer);
  650. extern    TMdxError        StdCall    MdxReply(TMdxSRMsgInfo    *,TMdxError);
  651. extern    TMdxError        StdCall    MdxReplyWithData(TMdxSRMsgInfo    *,
  652.                                                     TMdxError,void    *,
  653.                                                     TBufSize,TMdxMsgCode,
  654.                                                     TMdxMsgPri,TMdxSendAttr,
  655.                                                     TReqSeq,TTimer);
  656. extern    TMdxError        StdCall    MdxReplyWithMsg(TMdxSRMsgInfo    *,
  657.                                                     TMdxError,TMdxMsg    *,
  658.                                                     TMdxMsgCode,TMdxMsgPri,
  659.                                                     TMdxSendAttr,TReqSeq,
  660.                                                     TTimer);
  661. extern    TMdxError        cdecl    MdxL3SendNonMultiXData(TMdxProcId,
  662.                                                     UInt8Ptr,TBufSize);
  663.  
  664. extern    TMdxError        StdCall    MdxConnectProcess(TMdxProcessParams    *);
  665. extern    TMdxError        StdCall    MdxDisconnectProcess(TMdxProcId);
  666. extern    TMdxError        cdecl    MdxCheckProcessStatus(TMdxProcId);
  667. extern    TMdxError        StdCall    MdxAcceptProcess(TMdxProcId,TMdxPassword    *);
  668. extern    TMdxError        StdCall    MdxRejectProcess(TMdxProcId,
  669.                                                     TMdxCallError);
  670.  
  671.  
  672. extern    TMdxError        cdecl    MdxOpenLink(TMdxLinkParams    *);
  673. extern    TMdxError        cdecl    MdxCloseLink(TLinkDescr);
  674. extern    TMdxError        cdecl    MdxCheckLinkStatus(TLinkDescr);
  675. extern    TMdxError        cdecl    MdxGetLinkParams(TMdxLinkParams    *);
  676.  
  677.  
  678. extern    void            cdecl    MultiXStart(TMdxProcId,Int8Ptr,
  679.                                                 TMdxStartupAttributes,
  680.                                                 TEventHandler);
  681. extern    void            cdecl    MultiXWaitEvent(void);
  682. extern    void            cdecl    MultiXCheckEvent(void);
  683. extern    void            cdecl    MdxDeleteEvent(TMdxEvent    *);
  684. extern    void            cdecl    FatalErrorHandler(Int8Ptr);
  685. extern    TMdxProcId        cdecl    MdxGetMyId(TMdxProcDescr    *);
  686. extern    TMdxError        cdecl    MdxCreateApplEvent(TMdxEventCode,void*,TBufSize);
  687. extern    void            StdCall    TraceBuffer(Int16,void    *,TBufSize);
  688. extern    int            StdCall    TruncSpace(void    *,int,TBoolean);
  689.  
  690. #endif    /*    MultiXHIncluded */
  691.